#pragma once
#include "light.h"
class CDirectionalLight :
	public CLight
{
public:
	CDirectionalLight(void);
	virtual ~CDirectionalLight(void);

	void Init(const CVector3D& vPosition, const CVector3D& vDirection, DATA_TYPE fAmbient, const CColor4& vColor);
	virtual CColor4 Shade(const CRay& vRay, const CVector3D& vPoint, const CVector3D& vNormal, const CGeometry& geometry, bool bInShadow) const;
	virtual CRay GetRayToLightAndDistance(const CVector3D& vPoint, DATA_TYPE& fDistance) const;

	const CVector3D& GetDirection() const { return m_vDirection; }

protected:
	CVector3D m_vDirection;
};

typedef boost::shared_ptr<CDirectionalLight> CDirectionalLightPtr;